#include <iostream>
#include <fstream>
#include <unordered_set>
#include <string>

void readNamesFromFile(const std::string &filename, std::unordered_set<std::string> &nameSet)
{
    std::ifstream file(filename);
    std::string name;
    if (file.is_open())
    {
        while (std::getline(file, name))
        {
            nameSet.insert(name);
        }
        file.close();
    }
    else
    {
        std::cerr << "无法打开文件: " << filename << std::endl;
    }
}

int main()
{
    // 文件路径
    std::string file1 = "class2.txt";
    std::string file2 = "done.txt";

    // 用于存储文件中的名字
    std::unordered_set<std::string> set1, set2;

    // 从两个文件中读取名字
    readNamesFromFile(file1, set1);
    readNamesFromFile(file2, set2);

    // 查找重复的名字
    std::unordered_set<std::string> commonNames;
    for (const auto &name : set1)
    {
        if (set2.find(name) != set2.end())
        { // 如果name在set2中找到
            commonNames.insert(name);
        }
    }

    // 输出重复的名字
    if (commonNames.empty())
    {
        std::cout << "没有重复的名字" << std::endl;
    }
    else
    {
        std::cout << "重复的名字有: ";
        for (const auto &name : commonNames)
        {
            std::cout << name << " ";
        }
        std::cout << std::endl;
    }

    return 0;
}
